package com.the_last.constant;

/**
 * 预约相关常量
 *
 * @author zhanghaifeng
 */
public class ReservationConstant {
    
    // ========== 预约状态常量 ==========
    /**
     * 预约状态：已取消
     */
    public static final Integer STATUS_CANCELLED = 0;
    /**
     * 预约状态：待使用
     */
    public static final Integer STATUS_PENDING = 1;
    /**
     * 预约状态：已使用
     */
    public static final Integer STATUS_USED = 2;
    /**
     * 预约状态：超时
     */
    public static final Integer STATUS_TIMEOUT = 3;
    
    
    // ========== Redis键相关常量 ==========
    /**
     * 预约超时消息处理标识键前缀
     */
    public static final String RESERVATION_TIMEOUT_MESSAGE_KEY_PREFIX = "reservation:timeout:message:";
    
    /**
     * 预约消息在Redis中的过期时间（秒）：7天
     */
    public static final Integer RESERVATION_MESSAGE_EXPIRE_SECONDS = 7 * 24 * 60 * 60;
    
    // ========== 状态变更相关 ==========
    /**
     * 允许变更为已取消的状态
     */
    public static final Integer[] CANCELLABLE_STATUSES = {STATUS_PENDING};
    
    /**
     * 允许变更为已使用的状态
     */
    public static final Integer[] USABLE_STATUSES = {STATUS_PENDING};
    
    /**
     * 不可删除的状态（已使用的预约不允许删除）
     */
    public static final Integer[] NON_DELETABLE_STATUSES = {STATUS_USED};
}